const jwt = require('jsonwebtoken');
require('dotenv').config();

/**
 * 生成JWT令牌
 * @param {Object} payload - 要加密的数据
 * @returns {String} - JWT令牌
 */
const generateToken = (payload) => {
    return jwt.sign(
        payload, 
        process.env.JWT_SECRET, 
        { expiresIn: process.env.JWT_EXPIRES_IN }
    );
};

/**
 * 验证JWT令牌
 * @param {String} token - JWT令牌
 * @returns {Object|null} - 解密后的数据或null(无效令牌)
 */
const verifyToken = (token) => {
    try {
        const decoded = jwt.verify(token, process.env.JWT_SECRET);
        return decoded;
    } catch (error) {
        return null;
    }
};

/**
 * 解析JWT令牌（不验证有效性）
 * @param {String} token - JWT令牌
 * @returns {Object|null} - 解析后的数据或null
 */
const decodeToken = (token) => {
    try {
        return jwt.decode(token);
    } catch (error) {
        return null;
    }
};

module.exports = {
    generateToken,
    verifyToken,
    decodeToken
}; 